@DataProvider অ্যানোটেশন কি?
TestNG-র @DataProvider অ্যানোটেশনটি ব্যবহার করে ডেটা-ড্রিভেন টেস্টিং (Data-driven Testing) কার্যকর করা হয়। এটি একটি টেস্ট মেথডে একাধিক ইনপুট ডেটা সরবরাহ করার সুবিধা দেয়। @DataProvider একটি মেথড চিহ্নিত করে, যা একটি টেস্ট মেথডের জন্য ডেটা প্রস্তুত করে।
মূল বৈশিষ্ট্য:
- এটি Object[][] (দুই মাত্রার অবজেক্ট অ্যারে) রিটার্ন করে।
- প্রতিটি সারি একটি টেস্ট মেথডের জন্য ইনপুট ডেটার সেট হিসেবে কাজ করে।
- @DataProvider এর মাধ্যমে একই টেস্ট মেথডকে একাধিক ইনপুট সেট দিয়ে পুনরাবৃত্তি করে চালানো যায়।
@DataProvider এর প্রয়োজনীয়তা
১. ডেটা-ড্রিভেন টেস্টিং সহজ করা:
@DataProvider ব্যবহার করে টেস্ট কেসে বিভিন্ন ধরণের ইনপুট ডেটা প্রদান করা সহজ হয়।
২. রিডুস কোড রিপিটেশন:
একই ধরনের টেস্ট মেথডের জন্য বারবার আলাদা কোড লেখার পরিবর্তে একাধিক ইনপুট দিয়ে টেস্ট চালানো যায়।
৩. টেস্ট কভারেজ বৃদ্ধি:
একই টেস্ট মেথড দিয়ে বিভিন্ন ইনপুটের জন্য টেস্ট চালানো গেলে টেস্ট কভারেজ বৃদ্ধি পায়।
৪. ডায়নামিক ডেটা টেস্টিং:
পরিবর্তনশীল ডেটা সরবরাহের জন্য উপযোগী।
@DataProvider এর ব্যবহার
উদাহরণ: সহজ @DataProvider
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class DataProviderExample {
@DataProvider(name = "loginData")
public Object[][] dataProviderMethod() {
return new Object[][] {
{"admin", "admin123"},
{"user1", "password1"},
{"user2", "password2"}
};
}
@Test(dataProvider = "loginData")
public void testLogin(String username, String password) {
System.out.println("Testing login with Username: " + username + " and Password: " + password);
}
}
আউটপুট:
Testing login with Username: admin and Password: admin123
Testing login with Username: user1 and Password: password1
Testing login with Username: user2 and Password: password2
বিস্তারিত ব্যাখ্যা:
@DataProviderঅ্যানোটেশন দিয়েdataProviderMethodমেথডটি তৈরি করা হয়েছে। এটি একটি Object[][] ডেটা প্রদান করে।@Testঅ্যানোটেশনেdataProviderঅ্যাট্রিবিউট ব্যবহার করে @DataProvider মেথডের নাম উল্লেখ করা হয়েছে।- একাধিক ইনপুট ডেটা দিয়ে
testLoginমেথডটি বারবার চালানো হয়েছে।
উদাহরণ: @DataProvider এর মাধ্যমে গণনা টেস্টিং
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class CalculatorTest {
@DataProvider(name = "numbers")
public Object[][] dataProviderMethod() {
return new Object[][] {
{5, 3, 8},
{10, 20, 30},
{7, -2, 5}
};
}
@Test(dataProvider = "numbers")
public void testAddition(int num1, int num2, int expectedResult) {
int actualResult = num1 + num2;
System.out.println("Addition of " + num1 + " and " + num2 + " is: " + actualResult);
assert actualResult == expectedResult : "Test Failed!";
}
}
আউটপুট:
Addition of 5 and 3 is: 8
Addition of 10 and 20 is: 30
Addition of 7 and -2 is: 5
বিস্তারিত ব্যাখ্যা:
- এখানে @DataProvider তিনটি ইনপুট সেট সরবরাহ করেছে।
testAdditionমেথড প্রতিটি ইনপুট সেট দিয়ে আলাদাভাবে টেস্ট চালিয়েছে।
উদাহরণ: ডায়নামিক ডেটা প্রদান (Java Object থেকে)
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class DynamicDataProviderExample {
@DataProvider(name = "dynamicData")
public Object[][] provideData() {
return new Object[][] {
{"John", 25},
{"Emma", 30},
{"Oliver", 35}
};
}
@Test(dataProvider = "dynamicData")
public void testUserDetails(String name, int age) {
System.out.println("Name: " + name + ", Age: " + age);
}
}
আউটপুট:
Name: John, Age: 25
Name: Emma, Age: 30
Name: Oliver, Age: 35
@DataProvider এর অ্যাডভান্স বৈশিষ্ট্য
১. একই @DataProvider ব্যবহার করে একাধিক টেস্ট চালানো
একটি @DataProvider মেথড ব্যবহার করে একাধিক টেস্ট মেথড পরিচালনা করা যায়।
২. Dynamic Data Generation:
@DataProvider এর সাহায্যে ডেটা ডাইনামিক্যালি তৈরি করা সম্ভব, যেমন ডাটাবেস বা ফাইল থেকে।
@DataProvider এর উপকারিতা
- পরীক্ষার কার্যকারিতা বৃদ্ধি: একাধিক ইনপুট ব্যবহার করে একই টেস্ট মেথড পুনঃব্যবহার করা যায়।
- মডুলার কোড: ডেটা এবং টেস্ট মেথড আলাদাভাবে সংজ্ঞায়িত করার সুযোগ।
- সহজ ডিবাগিং: প্রতিটি ইনপুট সেটের জন্য পৃথক টেস্ট রান করে ডিবাগিং সহজ করে।
সংক্ষেপে
TestNG-র @DataProvider অ্যানোটেশন ডেটা-ড্রিভেন টেস্টিংয়ের একটি অত্যন্ত কার্যকর টুল। এটি একাধিক ইনপুট ডেটা দিয়ে টেস্ট সঞ্চালন সহজ করে এবং বড় মাপের অ্যাপ্লিকেশনে টেস্ট কভারেজ বাড়ায়।
Read more